AWS ParallelCluster ヘッドノードとコンピュートノードの IAM ロールに複数の IAM ポリシーをアタッチするコンフィグの記述方法
AWS ParallelCluster のクラスターのコンフィグで複数の IAM ポリシーをアタッチの設定する記述例を紹介します。
困っていた内容
ヘッドノード、コンピュートノードに任意の IAM ポリシーを複数設定したい場合、ParallelCluster のコンフィグにはどのように記述すればよいのでしょうか?
ユーザーガイドを確認しても IAM ポリシーを複数指定する記述方法がよくわかりません。
確認結果
AdditionalIamPolicies:
配下に同じインデントで- Policy:
を追記すれば問題ありません。
AWS マネージドポリシー、カスタマー管理(自作の IAM ポリシー)ともに同じ記述で指定できます。
Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster
クラスター作成時に生成された IAM ロールの内容から、クラスターのコンフィグして指定した IAM ポリシーがアタッチされていることを確認できます。
検証環境
AWS ParallelCluster のバージョンは3.5.1
を使用しています。
やってみた
複数の IAM ポリシーをヘッドノードと、コンピュートノードにアタッチする ParallelCluster のクラスターのコンフィグを作成しました。
- AWS マネージドポリシーのアタッチのサンプルとして
AmazonSSMManagedInstanceCore
を指定 - 自作の IAM ポリシーのアタッチサンプルとして
cost-tracking-policy-for-pcluster
を指定
Region: ap-northeast-1 Image: Os: ubuntu2004 Tags: - Key: Name Value: cost-tracking-cluster-with-slurm-accounting # ---------------------------------------------------------------- # Head Node Settings # ---------------------------------------------------------------- HeadNode: InstanceType: t3.micro Networking: ElasticIp: false SubnetId: subnet-035be95eeaa091603 Ssh: KeyName: sandbox-key LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Compute Node Settings # ---------------------------------------------------------------- Scheduling: Scheduler: slurm SlurmSettings: ScaledownIdletime: 5 SlurmQueues: # ------ Compute 1 ------ - Name: queue1 ComputeResources: - Name: queue1 Instances: - InstanceType: c6i.large MinCount: 0 MaxCount: 10 DisableSimultaneousMultithreading: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: true VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: SPOT AllocationStrategy: lowest-price Networking: SubnetIds: - subnet-035be95eeaa091603 PlacementGroup: Enabled: true Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - Policy: arn:aws:iam::123456789012:policy/cost-tracking-policy-for-pcluster S3Access: - BucketName: hpc-dev-postinstall-files EnableWriteAccess: false # ---------------------------------------------------------------- # Shared Storage Settings # ---------------------------------------------------------------- SharedStorage: - MountDir: /mnt/efs-1zone Name: efs-1zone StorageType: Efs EfsSettings: FileSystemId: fs-0f1158ade79354809 # ---------------------------------------------------------------- # Other Settings # ---------------------------------------------------------------- Monitoring: Logs: CloudWatch: Enabled: true RetentionInDays: 30 DeletionPolicy: "Delete" Dashboards: CloudWatch: Enabled: false
IAM ロールを確認してみる
クラスターのコンフィグから ParallelCluster のクラスター環境をデプロイしました。作成された IAM ロールの設定値を確認してみます。
ヘッドノードの IAM ロール確認
クラスターのコンフィグで指定した IAM ポリシーがアタッチされていることが確認できました。
AmazonSSMManagedInstanceCore
ポリシーがアタッチcost-tracking-policy-for-pcluster
ポリシーがアタッチ
コンピュートノードの IAM ロール確認
コンピュートノードの IAM ロールもヘッドノードの IAM ロールと同様に指定したポリシーがアタッチされています。
AmazonSSMManagedInstanceCore
ポリシーがアタッチcost-tracking-policy-for-pcluster
ポリシーがアタッチ
おわりに
過去に複数の IAM ポリシーをアタッチしてあるクラスターのコンフィグがすぐに見つからなく、ドキュメントを確認してみたのですが書式がいまいちわかりませんでした。設定方法のサンプルとして紹介しました。